Cryptographic implementations may be embodied as suites available to be invoked by a plurality of computer programs (also referred to as applications). Various applications invoke cryptographic operations in the storage and communication of data. The encryption operations are implemented by various encryption techniques, protocols and suites.
It is good practice in data-sensitive fields for two or more applications to communicate data with one another using a cryptographic technique. The choice of cryptographic technique depends on many factors, including processing load, error checking, authentication, non-repudiation, knowledge and trust of the other application, etc. Another factor is whether the cryptographic technique is available or common in the jurisdiction in which the application is being used. In some cases, various jurisdictions favour or enforce particular cryptographic techniques or suites for various reasons, and it is not uncommon that various countries enforce disparate cryptographic techniques within common industries. In these examples, it can be difficult to exchange data securely between entities in different countries that are in those industries.
Furthermore, cryptographic implementations are invoked by applications whose underlying source code languages and architectures vary, and which operate on numerous platform and device types. However, these applications must communicate with applications hosted on different platforms and with different code languages.
Sensitive data is increasingly transmitted over unsecured networks, while the diversity of applications continues to grow. Additionally, there is greater diversity in cryptographic implementations from a host of providers which are tailored to protect transmitted data from interception.